package cn.doitedu.day05

import cn.doitedu.day01.utils.SparkUtil
import cn.doitedu.day03.beans.Student
import org.apache.spark.rdd.RDD

/**
 * @Date 22.3.31
 * @Created by HANGGE
 * @Description
 */
object C02_转换算子_Filter {
  def main(args: Array[String]): Unit = {
    // 获取环境
    val sc = SparkUtil.getSc
    // 加载文件
    val rdd1 = sc.textFile("data/students.csv")
    // 调用算子  转换   不会触发计算
    // 1) 将每行数据切割
    val rdd2: RDD[Array[String]] = rdd1.map(line => line.split(","))


    // 2) 将每行数据切割 处理   封装在Student类中
    val rdd3: RDD[Student] = rdd1.map(line=>{
      val arr = line.split(",")
      //7,七娃,15,M,99,doit30
    Student(arr(0).toInt, arr(1), arr(2).toInt, arr(3), arr(4).toDouble, arr(5))
    })

    // 一  过滤出M的学生
    val res1 = rdd3.filter(_.gender.equals("M"))

    // 二 过滤出  分数>80分的
    val res2 = rdd3.filter(_.score > 80)

    // 三  过滤出年龄在20岁以上的M学生
    val res3 = rdd3.filter(stu => stu.age > 20 && stu.gender.equals("M"))
    //val res3 = rdd3.filter(_.age > 20).filter(_.gender.equals("M"))

    //四 过滤出年龄在20岁以上的M学生  有名字
    //经验 判断字符串不为""空串  一般使用trim处理
    val res4 = res3.filter(_.name.trim != "")

    res4.foreach(println)

  }

}
